La adquisición de un cliente en la empresa presenta costos asociados a este. Además, el costo de adquirir un nuevo cliente suele ser más elevado que en el que incurre la empresa en retenerlo. Por ende, es relevante lograr una fidelización de estos para asegurar la existencia del negocio en el tiempo. En ese sentido, se utilizan los modelos churn con el objetivo de conocer la propensión de que el cliente abandone la empresa y se transforme en un ex-usuario.
Se observa estadística descriptiva, distribución de las variables y que existen valores perdidos en esta.
El 14.5% de los registros son ex-usuarios de la empresa. Se muestra que existe un problema de clase desequilibrada en la variable churn.
Se observa mayor consumo de minutos en la tarde y en la noche en comparación con la mañana.
En promedio, las mayores facturaciones se registran en horarios de la tarde.
Los usuarios tienden a llamar 1.56 veces al mes a los centros de atención. Además, se observa que la distribución tiene un sesgo positivo.
A las variables Total.intl.calls y Total.intl.charge se le remueven observaciones y se crean las nuevas variables International_calls e International_charges con el objetivo de probar la efectividad de técnicas de imputación de datos faltantes.
Vemos que la variable International_calls tiene 14 valores perdidos.
La variable International_charges tiene 10 valores perdidos.
Sin embargo, 2 de estos valores perdidos se encuentran en el mismo usuario.
| Name | data_churn |
| Number of rows | 3333 |
| Number of columns | 22 |
| _______________________ | |
| Column type frequency: | |
| character | 3 |
| logical | 1 |
| numeric | 18 |
| ________________________ | |
| Group variables | None |
Variable type: character
| skim_variable | n_missing | complete_rate | min | max | empty | n_unique | whitespace |
|---|---|---|---|---|---|---|---|
| State | 0 | 1 | 2 | 2 | 0 | 51 | 0 |
| International.plan | 0 | 1 | 2 | 3 | 0 | 2 | 0 |
| Voice.mail.plan | 0 | 1 | 2 | 3 | 0 | 2 | 0 |
Variable type: logical
| skim_variable | n_missing | complete_rate | mean | count |
|---|---|---|---|---|
| Churn | 0 | 1 | 0.14 | FAL: 2850, TRU: 483 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| Account.length | 0 | 1 | 101.06 | 39.82 | 1.00 | 74.00 | 101.00 | 127.00 | 243.00 | ▂▇▇▂▁ |
| Area.code | 0 | 1 | 437.18 | 42.37 | 408.00 | 408.00 | 415.00 | 510.00 | 510.00 | ▇▁▁▁▃ |
| Number.vmail.messages | 0 | 1 | 8.10 | 13.69 | 0.00 | 0.00 | 0.00 | 20.00 | 51.00 | ▇▁▂▁▁ |
| Total.day.minutes | 0 | 1 | 179.78 | 54.47 | 0.00 | 143.70 | 179.40 | 216.40 | 350.80 | ▁▃▇▅▁ |
| Total.day.calls | 0 | 1 | 100.44 | 20.07 | 0.00 | 87.00 | 101.00 | 114.00 | 165.00 | ▁▁▇▇▁ |
| Total.day.charge | 0 | 1 | 30.56 | 9.26 | 0.00 | 24.43 | 30.50 | 36.79 | 59.64 | ▁▃▇▅▁ |
| Total.eve.minutes | 0 | 1 | 200.98 | 50.71 | 0.00 | 166.60 | 201.40 | 235.30 | 363.70 | ▁▂▇▅▁ |
| Total.eve.calls | 0 | 1 | 100.11 | 19.92 | 0.00 | 87.00 | 100.00 | 114.00 | 170.00 | ▁▁▇▇▁ |
| Total.eve.charge | 0 | 1 | 17.08 | 4.31 | 0.00 | 14.16 | 17.12 | 20.00 | 30.91 | ▁▂▇▅▁ |
| Total.night.minutes | 0 | 1 | 200.87 | 50.57 | 23.20 | 167.00 | 201.20 | 235.30 | 395.00 | ▁▅▇▂▁ |
| Total.night.calls | 0 | 1 | 100.11 | 19.57 | 33.00 | 87.00 | 100.00 | 113.00 | 175.00 | ▁▅▇▂▁ |
| Total.night.charge | 0 | 1 | 9.04 | 2.28 | 1.04 | 7.52 | 9.05 | 10.59 | 17.77 | ▁▅▇▃▁ |
| Total.intl.minutes | 0 | 1 | 10.24 | 2.79 | 0.00 | 8.50 | 10.30 | 12.10 | 20.00 | ▁▃▇▃▁ |
| Total.intl.calls | 0 | 1 | 4.48 | 2.46 | 0.00 | 3.00 | 4.00 | 6.00 | 20.00 | ▇▅▁▁▁ |
| International_calls | 14 | 1 | 4.48 | 2.46 | 0.00 | 3.00 | 4.00 | 6.00 | 20.00 | ▇▅▁▁▁ |
| Total.intl.charge | 0 | 1 | 2.76 | 0.75 | 0.00 | 2.30 | 2.78 | 3.27 | 5.40 | ▁▃▇▃▁ |
| International_charges | 10 | 1 | 2.76 | 0.75 | 0.00 | 2.30 | 2.78 | 3.27 | 5.10 | ▁▂▇▅▁ |
| Customer.service.calls | 0 | 1 | 1.56 | 1.32 | 0.00 | 1.00 | 1.00 | 2.00 | 9.00 | ▇▅▁▁▁ |
Se observa la distribución de la data:
International calls presenta una distribución con asimetría positiva. En ese tenor, se procede a usar un algoritmo de k-nearest neighbors.
Por el contrario, International charges tiende a converger a una distribución normal, por ende, se opta por imputar los valores con la media.
## International_calls International_charges
## Min. : 0.000 Min. :0.000
## 1st Qu.: 3.000 1st Qu.:2.300
## Median : 4.000 Median :2.780
## Mean : 4.475 Mean :2.764
## 3rd Qu.: 6.000 3rd Qu.:3.270
## Max. :20.000 Max. :5.100
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 3.000 4.000 4.479 6.000 20.000
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 2.300 2.780 2.765 3.270 5.400
Los que abandonan la empresa son los que suelen facturar más al mes. Por ende, son clientes muy importantes que se deben retener.
La mayor tasa de abandono de clientes se encuentra en California (CA) y Nueva Jersey (NJ).
Los ex-usuarios son los que tendían a realizar mayor cantidad de llamadas a los centros de atención al cliente.
Los ex-usuarios consumían mayor cantidad de minutos al mes que aquellos clientes que permanecen en la empresa. Además, preferían usar el servicio de telecomunicaciones en las mañanas y tardes.
Se transforman las variables, se eliminan aquellas con alta correlación para evitar multicolinealidad y presentar un modelo más parsimonioso.
Para poder entender el fenómeno estudiado se estima un modelo logit.
Se evidencia que el hecho de tener un plan internacional incrementa la probabilidad de que el cliente abandone la empresa.
Los clientes que tienen el plan de voicemail presentan mayor probabilidad de permanecer en la empresa que su contraparte (aquellos que no tienen el plan de voicemail).
A medida de que se incrementa el número de mensajes enviados, se aumenta la probabilidad de que el cliente abandone la empresa.
A mayor cantidad de minutos consumidos en la mañana, tarde y noche, mayor propensión a abandonar la empresa.
Los usuarios que registran mayor cantidad de llamadas a los servicios de atención al cliente son los más propensos a convertirse en ex-usuarios.
Los clientes que realizan llamadas internacionales tienden a permanecer en la empresa.
##
## ==================================================
## Dependent variable:
## ---------------------------
## Churn
## --------------------------------------------------
## International.plan 2.038***
## (0.145)
##
## Voice.mail.plan -1.997***
## (0.575)
##
## Number.vmail.messages 0.035*
## (0.018)
##
## Total.day.minutes 0.013***
## (0.001)
##
## Total.day.calls 0.003
## (0.003)
##
## Total.eve.minutes 0.007***
## (0.001)
##
## Total.eve.calls 0.001
## (0.003)
##
## Total.night.minutes 0.004***
## (0.001)
##
## Total.night.calls 0.001
## (0.003)
##
## Total.intl.minutes 0.127
## (0.194)
##
## Customer.service.calls 0.514***
## (0.039)
##
## International_calls1 -0.095***
## (0.025)
##
## International_charges1 -0.145
## (0.721)
##
## Constant -8.562***
## (0.711)
##
## --------------------------------------------------
## Observations 3,333
## Log Likelihood -1,079.604
## Akaike Inf. Crit. 2,187.208
## ==================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Para la construcción del modelo churn, se divide la data en el training set y testing set.
Debido a problemas con la clase desequilibrada en la variable dependiente, se utiliza la técnica de upsampling.
Para la modelización de los datos se estima un modelo ensamblador ya que presenta la ventaja de mejorar la precisión, estabilidad del modelo y evitar overfitting. Se utiliza la técnica de bagging para disminuir la varianza de las predicciones. Esta se basa en la combinación de las predicciones de múltiples modelos “débiles” para formar un modelo robusto. Cada uno de los modelos se elabora en base a diferentes remuestreos con remplazo de la población. Para tales fines se modeliza con el random forest, en el cual, se crean múltiples árboles de decisión para formar todo un bosque de árboles. En este se seleccionan de entre todos los predictores una muestra aleatoria de “m” predictores como candidatos para cada modelo. En ese tenor, es una combinación de remuestreo de observaciones y de predictores.
La métrica a maximizar es el AUC. En ese tenor, se procede a realizar el tuning de los hiperparámetros.
## Truth
## Prediction FALSE TRUE
## FALSE 701 23
## TRUE 18 91
Alrededor del 95% de los casos fueron clasificados correctamente usando la base completa, por ende, no se evidencia overfitting.
En este caso, los falsos negativos son más costosos que los falsos positivos debido a que establecer erróneamente que un cliente se quedará en la empresa hace que este no sea analizado por el departamento de retenciones. En ese tenor, el objetivo es minimizar los falsos negativos, los cuales, representan alrededor del 2% de los casos.
Para continuar mejorando las predicciones del modelo se recomienda: